package com.njtech.pet.service;

import com.njtech.pet.entity.SingleRecord;

import java.util.List;

/**
 * Author:cw
 * Date:2020-04-13 10:33
 * Description:统计数据操作
 */

public interface StatisticService {

    /**
     * 显示当前注册的用户,会员人数
     * @param ifMember ifMember == false时返回注册成为用户的总人数，ifMember == true时返回注册成为会员的人数
     * @return 人数
     */
     Integer showTotalUserNum(Boolean ifMember);

    /**
     * 显示所选类别的商品总数
     * @param type 商品类别：优惠卷，各种类别的保险
     * @return 返回个数
     */
     Integer showTotalItemNum(String type);

    /**
     * 显示所选状态的订单总数
     * @param state 订单状态：订单已支付，订单已取消
     * @return 人数
     */
     Integer showTotalBillNum(String state);

    /**
     * 显示当月(当日往前28天)内活跃的用户,会员人数，把月份分成4个星期，返回这4个星期内分别增长的值
     * @param ifMember ifMember == false时返回注册成为用户的总人数，ifMember == true时返回注册成为会员的人数
     * @return 返回list数组(0对应28天内离当前最近的一周，依次4代表28天离当前最远的一周)
     */
     List<Integer> showActiveUserOrMemberNumInWeek(Boolean ifMember);

    /**
     * 显示当月新增的商品，把月份分成4个星期，返回这4个星期内分别增长的值
     * @param type 商品类型
     * @param state 商品状态
     * @param subject 险别
     * @return 返回list数组(0对应28天内离当前最近的一周，依次4代表28天离当前最远的一周)
     */
    List<Integer> showItemNumInWeek(String type, String state, String subject);

    /**
     * 显示当月新增的订单，把月份分成4个星期，返回这4个星期内分别增长的值
     * @param type 订单类别
     * @param state 订单状态
     * @return 返回list数组(0对应28天内离当前最近的一周，依次4代表28天离当前最远的一周)
     */
     List<Integer> showBillNumInWeek(String type, String state);

    /**
     * 显示count月(如12个月)对应类别状态的订单数目
     * @param count 月份
     * @param type 订单类别
     * @param state 订单状态
     * @return 格式为：{name='yyyy-MM', value='*'}的List
     */
     List<SingleRecord> showBillNumByMonth(Integer count, String type, String state);

    /**
     * 显示count月(如12个月)对应类别状态的新增商品数目
     * @param count 月份
     * @param type 商品类别
     * @param state 商品状态
     * @param subject 险别
     * @return 格式为：{name='yyyy-MM', value='*'}的List
     */
     List<SingleRecord> showItemNumByMonth(Integer count, String type, String state, String subject);

    /**
     * 显示过去count年/月/天/周前开始到现在 类型为action，状态为state的数目
     * @param count 月份
     * @param action 行为
     * @param state 状态
     * @return 格式为：{name='yyyy-MM', value='*'}的List
     */
     List<SingleRecord> showActionNumByMonth(Integer count, String action, String state);


}
